package com.halfsword.creativecraft.modules.interfaces;

import net.minecraft.nbt.CompoundTag;

/**
 * 持久化数据接口
 * 需要保存和加载NBT数据的模块应实现此接口
 */
public interface IPersistentDataModule extends IMachineModule {

    /**
     * 将模块数据保存到NBT
     * @param tag 要保存到的CompoundTag
     */
    void saveToNBT(CompoundTag tag);

    /**
     * 从NBT加载模块数据
     * @param tag 包含数据的CompoundTag
     */
    void loadFromNBT(CompoundTag tag);

    /**
     * 获取模块数据的唯一标识符
     * 用于在NBT中区分不同模块的数据
     * @return 模块数据标识符
     */
    String getDataKey();

    /**
     * 检查模块数据是否为空
     * @return 数据是否为空
     */
    default boolean isEmpty() {
        return false;
    }

    /**
     * 重置模块数据到默认状态
     */
    default void reset() {}
}